package com.lw.sbdemo2.common.wechat.handler;

import com.lw.sbdemo2.common.constant.WechatConstants;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * <p>标题: 美折微信 - 菜单处理器</p>
 * <p>描述: </p>
 * <p>版权: Copyright (c) 2018</p>
 * <p>公司: 山人行工作室</p>
 *
 * @version: 1.0
 * @author: LinWang
 * @date 2018-7-18
 */
@Slf4j
@Component
public class MenuHandler extends AbstractHandler {

    /**
     * 菜单处理入口
     */
    @Override
    public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
                                    Map<String, Object> context, WxMpService weixinService,
                                    WxSessionManager sessionManager) {

        log.info("------------接收自定义菜单事件------------");
        log.info("发送方帐号（一个OpenID）：" + wxMessage.getFromUser());
        log.info("消息类型（MsgType）:" + wxMessage.getMsgType());
        log.info("事件类型（Event）:" + wxMessage.getEvent());
        log.info("事件KEY值（EventKey）:" + wxMessage.getEventKey());

        // 发送人
        String fromUser = wxMessage.getFromUser();

        // 事件类型
        String eventKey = wxMessage.getEventKey();

        //返回文本
        String replyCon = "";

        // 点击的菜单式链接，则不做处理
        if (WxConsts.MenuButtonType.VIEW.equals(eventKey)) {
            return null;
        }

        if (WechatConstants.MENU_KEY_HELP.equals(eventKey)) {
            replyCon = "Hi，小海马来为您服务喽！\n" +
                    "如需咨询或投诉建议，直接在对话框中输入文字发送即可开始对话啦\n" +
                    "您也可以直接拨打全国客服电话：\n" +
                    "400-880-1861\n" +
                    "(小海马在线时间 09:30-21:30)";
        } else {
            replyCon = "人生";
        }

        //返回文本消息
        return WxMpXmlOutMessage.TEXT().content(replyCon)
                .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
                .build();
    }
}
